\relax 
\ifx\hyper@anchor\@undefined
\global \let \oldcontentsline\contentsline
\gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global \let \oldnewlabel\newlabel
\gdef \newlabel#1#2{\newlabelxx{#1}#2}
\gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\let \contentsline\oldcontentsline
\let \newlabel\oldnewlabel}
\else
\global \let \hyper@last\relax 
\fi

\select@language{english}
\@writefile{toc}{\select@language{english}}
\@writefile{lof}{\select@language{english}}
\@writefile{lot}{\select@language{english}}
\@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{6}{chapter.1}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {1.1}About SDCC}{6}{section.1.1}}
\@writefile{toc}{\contentsline {section}{\numberline {1.2}Open Source}{7}{section.1.2}}
\@writefile{toc}{\contentsline {section}{\numberline {1.3}Typographic conventions}{7}{section.1.3}}
\newlabel{sec:Compatibility-with-previous}{{1.4}{7}{Compatibility\label {sec:Compatibility-with-previous} with previous versions\index {Compatibility with previous versions}\relax }{section.1.4}{}}
\@writefile{toc}{\contentsline {section}{\numberline {1.4}Compatibility with previous versions}{7}{section.1.4}}
\newlabel{1@xvr}{{}{7}{Compatibility\label {sec:Compatibility-with-previous} with previous versions\index {Compatibility with previous versions}\relax }{section.1.4}{}}
\newlabel{1@vr}{{}{7}{Compatibility\label {sec:Compatibility-with-previous} with previous versions\index {Compatibility with previous versions}\relax }{section.1.4}{}}
\@writefile{toc}{\contentsline {section}{\numberline {1.5}System Requirements}{8}{section.1.5}}
\@writefile{toc}{\contentsline {section}{\numberline {1.6}Other Resources}{9}{section.1.6}}
\@writefile{toc}{\contentsline {section}{\numberline {1.7}Wishes for the future}{9}{section.1.7}}
\@writefile{toc}{\contentsline {chapter}{\numberline {2}Installing SDCC}{10}{chapter.2}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {2.1}Configure Options}{10}{section.2.1}}
\newlabel{sub:Install-paths}{{2.2}{12}{Install paths\label {sub:Install-paths}\index {Install paths}\relax }{section.2.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.2}Install paths}{12}{section.2.2}}
\newlabel{sub:Search-Paths}{{2.3}{13}{Search Paths\label {sub:Search-Paths}\index {Search path}\relax }{section.2.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Search Paths}{13}{section.2.3}}
\@writefile{toc}{\contentsline {section}{\numberline {2.4}Building SDCC}{14}{section.2.4}}
\newlabel{sub:Building-SDCC-on-Linux}{{2.4.1}{14}{Building SDCC on Linux\label {sub:Building-SDCC-on-Linux}\relax }{subsection.2.4.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.1}Building SDCC on Linux}{14}{subsection.2.4.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.2}Building SDCC on Mac OS X}{15}{subsection.2.4.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.3}Cross compiling SDCC on Linux for Windows}{15}{subsection.2.4.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.4}Building SDCC using Cygwin and Mingw32}{15}{subsection.2.4.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.5}Building SDCC Using Microsoft Visual C++ 6.0/NET (MSVC)}{16}{subsection.2.4.5}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.6}Windows Install Using a ZIP Package}{17}{subsection.2.4.6}}
\newlabel{sub:Windows-Install}{{2.4.7}{17}{Windows Install Using the Setup Program\label {sub:Windows-Install}\relax }{subsection.2.4.7}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.7}Windows Install Using the Setup Program}{17}{subsection.2.4.7}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.8}VPATH feature}{17}{subsection.2.4.8}}
\@writefile{toc}{\contentsline {section}{\numberline {2.5}Building the Documentation}{18}{section.2.5}}
\@writefile{toc}{\contentsline {section}{\numberline {2.6}Reading the Documentation}{18}{section.2.6}}
\newlabel{sec:Testing-the-SDCC}{{2.7}{18}{Testing the SDCC Compiler\label {sec:Testing-the-SDCC}\relax }{section.2.7}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.7}Testing the SDCC Compiler}{18}{section.2.7}}
\newlabel{sub:Install-Trouble-shooting}{{2.8}{19}{Install Trouble-shooting\label {sub:Install-Trouble-shooting}\index {Install trouble-shooting}\relax }{section.2.8}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.8}Install Trouble-shooting}{19}{section.2.8}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.8.1}If SDCC does not build correctly}{19}{subsection.2.8.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.8.2}What the ''./configure'' does}{19}{subsection.2.8.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.8.3}What the ''make'' does}{19}{subsection.2.8.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.8.4}What the ''make install'' command does.}{20}{subsection.2.8.4}}
\@writefile{toc}{\contentsline {section}{\numberline {2.9}Components of SDCC}{20}{section.2.9}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.9.1}sdcc - The Compiler}{21}{subsection.2.9.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.9.2}sdcpp - The C-Preprocessor}{21}{subsection.2.9.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.9.3}sdas, sdld - The Assemblers and Linkage Editors}{21}{subsection.2.9.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.9.4}s51, sz80, shc08 - The Simulators}{21}{subsection.2.9.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.9.5}sdcdb - Source Level Debugger}{21}{subsection.2.9.5}}
\@writefile{toc}{\contentsline {chapter}{\numberline {3}Using SDCC}{22}{chapter.3}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Compiling}{22}{section.3.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}Single Source File Projects}{22}{subsection.3.1.1}}
\newlabel{2@xvr}{{}{22}{Single Source File Projects\relax }{subsection.3.1.1}{}}
\newlabel{2@vr}{{}{22}{Single Source File Projects\relax }{subsection.3.1.1}{}}
\newlabel{OMF file}{{3.1.1}{22}{Single Source File Projects\relax }{subsection.3.1.1}{}}
\newlabel{sub:Postprocessing-the-Intel}{{3.1.2}{22}{Postprocessing the Intel Hex\index {Intel hex format} file\label {sub:Postprocessing-the-Intel}\relax }{subsection.3.1.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.2}Postprocessing the Intel Hex file}{22}{subsection.3.1.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.3}Projects with Multiple Source Files}{23}{subsection.3.1.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.4}Projects with Additional Libraries}{23}{subsection.3.1.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.5}Using sdcclib to Create and Manage Libraries}{24}{subsection.3.1.5}}
\newlabel{sub:Using-ar-to}{{3.1.6}{25}{Using ar to Create and Manage Libraries\index {ar}\label {sub:Using-ar-to}\relax }{subsection.3.1.6}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.6}Using ar to Create and Manage Libraries}{25}{subsection.3.1.6}}
\newlabel{sec:Command-Line-Options}{{3.2}{25}{Command Line Options\index {Command Line Options}\label {sec:Command-Line-Options}\relax }{section.3.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Command Line Options}{25}{section.3.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}Processor Selection Options}{25}{subsection.3.2.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.2}Preprocessor Options}{26}{subsection.3.2.2}}
\newlabel{lyx:-pedantic-parse-number}{{3.2.2}{26}{Preprocessor Options\index {Options preprocessor}\index {Preprocessor!Options}\index {sdcpp (preprocessor)}\relax }{subsection.3.2.2}{}}
\newlabel{3@xvr}{{}{26}{Preprocessor Options\index {Options preprocessor}\index {Preprocessor!Options}\index {sdcpp (preprocessor)}\relax }{subsection.3.2.2}{}}
\newlabel{3@vr}{{}{26}{Preprocessor Options\index {Options preprocessor}\index {Preprocessor!Options}\index {sdcpp (preprocessor)}\relax }{subsection.3.2.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.3}Linker Options}{27}{subsection.3.2.3}}
\newlabel{lyx:-Wl option}{{3.2.3}{27}{Linker Options\index {Options linker}\index {Linker options}\relax }{subsection.3.2.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.4}MCS51 Options}{27}{subsection.3.2.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.5}DS390 / DS400 Options}{28}{subsection.3.2.5}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.6}Z80 Options}{29}{subsection.3.2.6}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.7}GBZ80 Options}{29}{subsection.3.2.7}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.8}Optimization Options}{29}{subsection.3.2.8}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.9}Other Options}{30}{subsection.3.2.9}}
\newlabel{lyx:--callee-saves-function1[,function2][,function3]...}{{3.2.9}{30}{Other Options\index {Options other}\relax }{subsection.3.2.9}{}}
\newlabel{4@xvr}{{}{30}{Other Options\index {Options other}\relax }{subsection.3.2.9}{}}
\newlabel{4@vr}{{}{30}{Other Options\index {Options other}\relax }{subsection.3.2.9}{}}
\newlabel{lyx:--less-pedantic}{{3.2.9}{31}{Other Options\index {Options other}\relax }{subsection.3.2.9}{}}
\newlabel{5@xvr}{{}{31}{Other Options\index {Options other}\relax }{subsection.3.2.9}{}}
\newlabel{5@vr}{{}{31}{Other Options\index {Options other}\relax }{subsection.3.2.9}{}}
\newlabel{lyx:-codeseg}{{3.2.9}{32}{Other Options\index {Options other}\relax }{subsection.3.2.9}{}}
\newlabel{lyx:more-pedantic-SPLINT}{{3.2.9}{32}{Other Options\index {Options other}\relax }{subsection.3.2.9}{}}
\newlabel{lyx:--short-is-8bits}{{3.2.9}{32}{Other Options\index {Options other}\relax }{subsection.3.2.9}{}}
\newlabel{lyx:--use-non-free}{{3.2.9}{32}{Other Options\index {Options other}\relax }{subsection.3.2.9}{}}
\newlabel{sub:Intermediate-Dump-Options}{{3.2.10}{32}{Intermediate Dump Options\label {sub:Intermediate-Dump-Options}\index {Options intermediate dump}\index {Intermediate dump options}\relax }{subsection.3.2.10}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.10}Intermediate Dump Options}{32}{subsection.3.2.10}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.11}Redirecting output on Windows Shells}{33}{subsection.3.2.11}}
\@writefile{toc}{\contentsline {section}{\numberline {3.3}Environment variables}{33}{section.3.3}}
\@writefile{toc}{\contentsline {section}{\numberline {3.4}Storage Class Language Extensions}{33}{section.3.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.4.1}MCS51/DS390 Storage Class Language Extensions}{33}{subsection.3.4.1}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.1.1}data / near}{33}{subsubsection.3.4.1.1}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.1.2}xdata / far}{34}{subsubsection.3.4.1.2}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.1.3}idata}{34}{subsubsection.3.4.1.3}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.1.4}pdata}{34}{subsubsection.3.4.1.4}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.1.5}code}{34}{subsubsection.3.4.1.5}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.1.6}bit}{35}{subsubsection.3.4.1.6}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.1.7}sfr / sfr16 / sfr32 / sbit}{35}{subsubsection.3.4.1.7}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.1.8}Pointers to MCS51/DS390 specific memory spaces}{35}{subsubsection.3.4.1.8}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.1.9}Notes on MCS51 memory layout}{36}{subsubsection.3.4.1.9}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.4.2}Z80/Z180 Storage Class Language Extensions}{37}{subsection.3.4.2}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.2.1}sfr (in/out to 8-bit addresses)}{37}{subsubsection.3.4.2.1}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.2.2}banked sfr (in/out to 16-bit addresses)}{37}{subsubsection.3.4.2.2}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.2.3}sfr (in0/out0 to 8 bit addresses on Z180/HD64180)}{37}{subsubsection.3.4.2.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.4.3}HC08 Storage Class Language Extensions}{37}{subsection.3.4.3}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.3.1}data }{37}{subsubsection.3.4.3.1}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.3.2}xdata }{37}{subsubsection.3.4.3.2}}
\@writefile{toc}{\contentsline {section}{\numberline {3.5}Other SDCC language extensions}{37}{section.3.5}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.5.1}Binary constants}{37}{subsection.3.5.1}}
\@writefile{toc}{\contentsline {section}{\numberline {3.6}Absolute Addressing}{38}{section.3.6}}
\newlabel{sec:Parameters-and-Local-Variables}{{3.7}{39}{Parameters\index {Parameters}\index {function parameter} \& Local Variables\index {local variables}\label {sec:Parameters-and-Local-Variables}\relax }{section.3.7}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.7}Parameters \& Local Variables}{39}{section.3.7}}
\newlabel{sub:Overlaying}{{3.8}{39}{Overlaying\label {sub:Overlaying}\index {Overlaying}\relax }{section.3.8}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.8}Overlaying}{39}{section.3.8}}
\newlabel{sub:Interrupt-Service-Routines}{{3.9}{40}{Interrupt Service Routines\label {sub:Interrupt-Service-Routines}\relax }{section.3.9}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.9}Interrupt Service Routines}{40}{section.3.9}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.9.1}General Information}{40}{subsection.3.9.1}}
\newlabel{sub:Common-interrupt-pitfall-volatile}{{3.9.1.1}{40}{\label {sub:Common-interrupt-pitfall-volatile}Common interrupt pitfall: variable not declared \emph {volatile}\relax }{subsubsection.3.9.1.1}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.9.1.1}Common interrupt pitfall: variable not declared \emph  {volatile}}{40}{subsubsection.3.9.1.1}}
\newlabel{sub:Common-interrupt-pitfall-non-atomic}{{3.9.1.2}{40}{\label {sub:Common-interrupt-pitfall-non-atomic}Common interrupt pitfall: \emph {non-atomic access}\relax }{subsubsection.3.9.1.2}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.9.1.2}Common interrupt pitfall: \emph  {non-atomic access}}{40}{subsubsection.3.9.1.2}}
\newlabel{sub:Common-interrupt-pitfall-stack-overflow}{{3.9.1.3}{41}{\label {sub:Common-interrupt-pitfall-stack-overflow}Common interrupt pitfall: \emph {stack overflow}\relax }{subsubsection.3.9.1.3}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.9.1.3}Common interrupt pitfall: \emph  {stack overflow}}{41}{subsubsection.3.9.1.3}}
\newlabel{sub:Common-interrupt-pitfall-non-reentrant}{{3.9.1.4}{41}{\label {sub:Common-interrupt-pitfall-non-reentrant}Common interrupt pitfall: \emph {use of non-reentrant functions}\relax }{subsubsection.3.9.1.4}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.9.1.4}Common interrupt pitfall: \emph  {use of non-reentrant functions}}{41}{subsubsection.3.9.1.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.9.2}MCS51/DS390 Interrupt Service Routines}{41}{subsection.3.9.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.9.3}HC08 Interrupt Service Routines}{41}{subsection.3.9.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.9.4}Z80 Interrupt Service Routines}{42}{subsection.3.9.4}}
\@writefile{toc}{\contentsline {section}{\numberline {3.10}Enabling and Disabling Interrupts}{42}{section.3.10}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.10.1}Critical Functions and Critical Statements}{42}{subsection.3.10.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.10.2}Enabling and Disabling Interrupts directly}{42}{subsection.3.10.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.10.3}Semaphore locking (mcs51/ds390)}{43}{subsection.3.10.3}}
\newlabel{sub:Functions-using-private-banks}{{3.11}{43}{Functions using private register banks\label {sub:Functions-using-private-banks} (mcs51/ds390)\relax }{section.3.11}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.11}Functions using private register banks (mcs51/ds390)}{43}{section.3.11}}
\newlabel{sub:Startup-Code}{{3.12}{44}{Startup Code\label {sub:Startup-Code}\index {Startup code}\relax }{section.3.12}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.12}Startup Code}{44}{section.3.12}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.12.1}MCS51/DS390 Startup Code}{44}{subsection.3.12.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.12.2}HC08 Startup Code}{46}{subsection.3.12.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.12.3}Z80 Startup Code}{46}{subsection.3.12.3}}
\@writefile{toc}{\contentsline {section}{\numberline {3.13}Inline Assembler Code}{46}{section.3.13}}
\newlabel{sub:A-Step-by Assembler Introduction}{{3.13.1}{46}{A Step by Step Introduction\label {sub:A-Step-by Assembler Introduction}\relax }{subsection.3.13.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.13.1}A Step by Step Introduction}{46}{subsection.3.13.1}}
\newlabel{sub:Naked-Functions}{{3.13.2}{48}{Naked Functions\label {sub:Naked-Functions}\index {Naked functions}\relax }{subsection.3.13.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.13.2}Naked Functions}{48}{subsection.3.13.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.13.3}Use of Labels within Inline Assembler}{49}{subsection.3.13.3}}
\@writefile{toc}{\contentsline {section}{\numberline {3.14}Interfacing with Assembler Code}{50}{section.3.14}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.14.1}Global Registers used for Parameter Passing}{50}{subsection.3.14.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.14.2}Registers usage}{50}{subsection.3.14.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.14.3}Assembler Routine (non-reentrant)}{50}{subsection.3.14.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.14.4}Assembler Routine (reentrant)}{51}{subsection.3.14.4}}
\@writefile{toc}{\contentsline {section}{\numberline {3.15}int (16 bit) and long (32 bit) Support}{52}{section.3.15}}
\@writefile{toc}{\contentsline {section}{\numberline {3.16}Floating Point Support}{52}{section.3.16}}
\gdef \LT@i {\LT@entry 
    {1}{76.89238pt}\LT@entry 
    {2}{69.34967pt}\LT@entry 
    {1}{67.33434pt}\LT@entry 
    {1}{58.18327pt}\LT@entry 
    {2}{69.34967pt}\LT@entry 
    {1}{67.33434pt}\LT@entry 
    {2}{77.24966pt}}
\@writefile{toc}{\contentsline {section}{\numberline {3.17}Library Routines}{53}{section.3.17}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.17.1}Compiler support routines (\_gptrget, \_mulint etc.)}{53}{subsection.3.17.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.17.2}Stdclib functions (puts, printf, strcat etc.)}{53}{subsection.3.17.2}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.17.2.1}<stdio.h>}{53}{subsubsection.3.17.2.1}}
\@writefile{toc}{\contentsline {paragraph}{getchar(), putchar()}{53}{section*.2}}
\@writefile{toc}{\contentsline {paragraph}{printf()}{53}{section*.3}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.17.2.2}<malloc.h>}{54}{subsubsection.3.17.2.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.17.3}Math functions (sinf, powf, sqrtf etc.)}{54}{subsection.3.17.3}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.17.3.1}<math.h>}{54}{subsubsection.3.17.3.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.17.4}Other libraries}{54}{subsection.3.17.4}}
\@writefile{toc}{\contentsline {section}{\numberline {3.18}Memory Models}{55}{section.3.18}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.18.1}MCS51 Memory Models}{55}{subsection.3.18.1}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.18.1.1}Small, Medium, Large and Huge}{55}{subsubsection.3.18.1.1}}
\newlabel{sub:External-Stack}{{3.18.1.2}{55}{External Stack\label {sub:External-Stack}\index {stack}\index {External stack (mcs51)}\relax }{subsubsection.3.18.1.2}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.18.1.2}External Stack}{55}{subsubsection.3.18.1.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.18.2}DS390 Memory Model}{55}{subsection.3.18.2}}
\newlabel{sec:Pragmas}{{3.19}{55}{Pragmas\label {sec:Pragmas}\index {Pragmas}\relax }{section.3.19}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.19}Pragmas}{55}{section.3.19}}
\newlabel{6@xvr}{{}{55}{Pragmas\label {sec:Pragmas}\index {Pragmas}\relax }{section.3.19}{}}
\newlabel{6@vr}{{}{55}{Pragmas\label {sec:Pragmas}\index {Pragmas}\relax }{section.3.19}{}}
\newlabel{ite:callee_saves-function1[,function2[,function3...]]--}{{3.19}{56}{Pragmas\label {sec:Pragmas}\index {Pragmas}\relax }{section.3.19}{}}
\newlabel{7@xvr}{{}{56}{Pragmas\label {sec:Pragmas}\index {Pragmas}\relax }{section.3.19}{}}
\newlabel{7@vr}{{}{56}{Pragmas\label {sec:Pragmas}\index {Pragmas}\relax }{section.3.19}{}}
\newlabel{ite:less_pedantic}{{3.19}{56}{Pragmas\label {sec:Pragmas}\index {Pragmas}\relax }{section.3.19}{}}
\newlabel{8@xvr}{{}{56}{Pragmas\label {sec:Pragmas}\index {Pragmas}\relax }{section.3.19}{}}
\newlabel{8@vr}{{}{56}{Pragmas\label {sec:Pragmas}\index {Pragmas}\relax }{section.3.19}{}}
\newlabel{ite:pedantic_parse_number}{{3.19}{57}{Pragmas\label {sec:Pragmas}\index {Pragmas}\relax }{section.3.19}{}}
\newlabel{9@xvr}{{}{57}{Pragmas\label {sec:Pragmas}\index {Pragmas}\relax }{section.3.19}{}}
\newlabel{9@vr}{{}{57}{Pragmas\label {sec:Pragmas}\index {Pragmas}\relax }{section.3.19}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.20}Defines Created by the Compiler}{59}{section.3.20}}
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Notes on supported Processors}{60}{chapter.4}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{sub:MCS51-variants}{{4.1}{60}{MCS51 variants\label {sub:MCS51-variants}\index {MCS51 variants}\relax }{section.4.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.1}MCS51 variants}{60}{section.4.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}pdata access by SFR}{60}{subsection.4.1.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.2}Other Features available by SFR}{60}{subsection.4.1.2}}
\newlabel{sub:Bankswitching}{{4.1.3}{60}{Bankswitching\label {sub:Bankswitching}\relax }{subsection.4.1.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.3}Bankswitching}{60}{subsection.4.1.3}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.3.1}Hardware}{61}{subsubsection.4.1.3.1}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.3.2}Software}{61}{subsubsection.4.1.3.2}}
\@writefile{toc}{\contentsline {section}{\numberline {4.2}DS400 port}{61}{section.4.2}}
\@writefile{toc}{\contentsline {section}{\numberline {4.3}The Z80 and gbz80 port}{61}{section.4.3}}
\@writefile{toc}{\contentsline {section}{\numberline {4.4}The HC08 port}{62}{section.4.4}}
\@writefile{toc}{\contentsline {section}{\numberline {4.5}The PIC14 port}{62}{section.4.5}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.1}PIC Code Pages and Memory Banks}{62}{subsection.4.5.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.2}Adding New Devices to the Port }{63}{subsection.4.5.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.3}Interrupt Code}{63}{subsection.4.5.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.4}Linking and Assembling}{63}{subsection.4.5.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.5}Command-Line Options}{64}{subsection.4.5.5}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.6}Environment Variables}{64}{subsection.4.5.6}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.7}The Library}{64}{subsection.4.5.7}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.5.7.1}error: missing definition for symbol ``\_\_gptrget1''}{64}{subsubsection.4.5.7.1}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.5.7.2}Processor mismatch in file ``XXX''.}{64}{subsubsection.4.5.7.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.8}Known Bugs}{64}{subsection.4.5.8}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.5.8.1}Function arguments}{64}{subsubsection.4.5.8.1}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.5.8.2}Regression tests fail}{64}{subsubsection.4.5.8.2}}
\@writefile{toc}{\contentsline {section}{\numberline {4.6}The PIC16 port}{65}{section.4.6}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.1}Global Options}{65}{subsection.4.6.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.2}Port Specific Options}{65}{subsection.4.6.2}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.2.1}Code Generation Options}{65}{subsubsection.4.6.2.1}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.2.2}Optimization Options}{65}{subsubsection.4.6.2.2}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.2.3}Assembling Options}{66}{subsubsection.4.6.2.3}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.2.4}Linking Options}{66}{subsubsection.4.6.2.4}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.2.5}Debugging Options}{66}{subsubsection.4.6.2.5}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.3}Environment Variables}{66}{subsection.4.6.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.4}Preprocessor Macros}{67}{subsection.4.6.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.5}Directories}{67}{subsection.4.6.5}}
\newlabel{sub:PIC16_Pragmas}{{4.6.6}{67}{Pragmas\label {sub:PIC16_Pragmas}\relax }{subsection.4.6.6}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.6}Pragmas}{67}{subsection.4.6.6}}
\newlabel{sub:PIC16_Header-Files-and-Libraries}{{4.6.7}{69}{Header Files and Libraries\label {sub:PIC16_Header-Files-and-Libraries}\relax }{subsection.4.6.7}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.7}Header Files and Libraries}{69}{subsection.4.6.7}}
\newlabel{sub:PIC16_Header-Files}{{4.6.8}{69}{Header Files\label {sub:PIC16_Header-Files}\relax }{subsection.4.6.8}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.8}Header Files}{69}{subsection.4.6.8}}
\newlabel{sub:pic16Libraries}{{4.6.9}{69}{Libraries\label {sub:pic16Libraries}\relax }{subsection.4.6.9}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.9}Libraries}{69}{subsection.4.6.9}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.10}Adding New Devices to the Port}{70}{subsection.4.6.10}}
\newlabel{enu:pic16-edit-makefile-am}{{8}{70}{Adding New Devices to the Port\relax }{Item.30}{}}
\newlabel{enu:pic16-edit-libio-makefile-am}{{9}{70}{Adding New Devices to the Port\relax }{Item.31}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.11}Memory Models}{70}{subsection.4.6.11}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.12}Stack}{71}{subsection.4.6.12}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.13}Functions}{71}{subsection.4.6.13}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.14}Function return values}{72}{subsection.4.6.14}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.15}Interrupts}{72}{subsection.4.6.15}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.16}Generic Pointers}{73}{subsection.4.6.16}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.17}PIC16 C Libraries}{73}{subsection.4.6.17}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.17.1}Standard I/O Streams}{73}{subsubsection.4.6.17.1}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.17.2}Printing functions}{74}{subsubsection.4.6.17.2}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.17.3}Signals}{74}{subsubsection.4.6.17.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.18}PIC16 Port -- Tips}{75}{subsection.4.6.18}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.18.1}Stack size}{75}{subsubsection.4.6.18.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.19}Known Bugs}{75}{subsection.4.6.19}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.19.1}Extended Instruction Set}{75}{subsubsection.4.6.19.1}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.6.19.2}Regression Tests}{75}{subsubsection.4.6.19.2}}
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Debugging}{76}{chapter.5}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{cha:Debugging-with-SDCDB}{{5.1}{77}{Debugging with SDCDB\label {cha:Debugging-with-SDCDB}\index {SDCDB (debugger)} \relax }{section.5.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5.1}Debugging with SDCDB }{77}{section.5.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.1}Compiling for Debugging}{77}{subsection.5.1.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.2}How the Debugger Works}{77}{subsection.5.1.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.3}Starting the Debugger SDCDB}{77}{subsection.5.1.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.4}SDCDB Command Line Options}{78}{subsection.5.1.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.5}SDCDB Debugger Commands}{78}{subsection.5.1.5}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.6}Interfacing SDCDB with DDD}{80}{subsection.5.1.6}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1.7}Interfacing SDCDB with XEmacs}{80}{subsection.5.1.7}}
\@writefile{toc}{\contentsline {chapter}{\numberline {6}TIPS}{82}{chapter.6}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{type promotion}{{6}{82}{TIPS\relax }{chapter.6}{}}
\newlabel{sec:Porting-code-to-other-compilers}{{6.1}{83}{Porting code from or to other compilers\label {sec:Porting-code-to-other-compilers}\relax }{section.6.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {6.1}Porting code from or to other compilers}{83}{section.6.1}}
\@writefile{toc}{\contentsline {section}{\numberline {6.2}Tools included in the distribution}{84}{section.6.2}}
\@writefile{toc}{\contentsline {section}{\numberline {6.3}Documentation included in the distribution}{84}{section.6.3}}
\@writefile{toc}{\contentsline {section}{\numberline {6.4}Communication online at SourceForge}{85}{section.6.4}}
\newlabel{sec:Related-open-source-tools}{{6.5}{85}{Related open source tools\label {sec:Related-open-source-tools}\index {Related tools}\relax }{section.6.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {6.5}Related open source tools}{85}{section.6.5}}
\@writefile{toc}{\contentsline {section}{\numberline {6.6}Related documentation / recommended reading}{86}{section.6.6}}
\@writefile{toc}{\contentsline {section}{\numberline {6.7}Application notes specifically for SDCC}{86}{section.6.7}}
\@writefile{toc}{\contentsline {section}{\numberline {6.8}Some Questions}{87}{section.6.8}}
\@writefile{toc}{\contentsline {chapter}{\numberline {7}Support}{88}{chapter.7}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {7.1}Reporting Bugs}{88}{section.7.1}}
\newlabel{sub:Requesting-Features}{{7.2}{89}{Requesting Features\label {sub:Requesting-Features}\index {Feature request}\index {Requesting features}\index {Communication!Feature request}\relax }{section.7.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {7.2}Requesting Features}{89}{section.7.2}}
\@writefile{toc}{\contentsline {section}{\numberline {7.3}Submitting patches}{89}{section.7.3}}
\@writefile{toc}{\contentsline {section}{\numberline {7.4}Getting Help}{89}{section.7.4}}
\@writefile{toc}{\contentsline {section}{\numberline {7.5}ChangeLog}{89}{section.7.5}}
\@writefile{toc}{\contentsline {section}{\numberline {7.6}Subversion Source Code Repository}{89}{section.7.6}}
\@writefile{toc}{\contentsline {section}{\numberline {7.7}Release policy}{89}{section.7.7}}
\newlabel{sec:Quality-control}{{7.8}{89}{Quality control\label {sec:Quality-control}\index {Quality control}\relax }{section.7.8}{}}
\@writefile{toc}{\contentsline {section}{\numberline {7.8}Quality control}{89}{section.7.8}}
\@writefile{toc}{\contentsline {section}{\numberline {7.9}Examples}{90}{section.7.9}}
\@writefile{toc}{\contentsline {section}{\numberline {7.10}Use of SDCC in Education}{90}{section.7.10}}
\@writefile{toc}{\contentsline {chapter}{\numberline {8}SDCC Technical Data}{91}{chapter.8}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {8.1}Optimizations}{91}{section.8.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.1}Sub-expression Elimination}{91}{subsection.8.1.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.2}Dead-Code Elimination}{91}{subsection.8.1.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.3}Copy-Propagation}{92}{subsection.8.1.3}}
\newlabel{sub:Loop-Optimizations}{{8.1.4}{92}{Loop Optimizations\index {Loop optimization}\label {sub:Loop-Optimizations}\relax }{subsection.8.1.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.4}Loop Optimizations}{92}{subsection.8.1.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.5}Loop Reversing}{93}{subsection.8.1.5}}
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.6}Algebraic Simplifications}{93}{subsection.8.1.6}}
\newlabel{sub:'switch'-Statements}{{8.1.7}{93}{'switch' Statements\label {sub:'switch'-Statements}\index {switch statement}\relax }{subsection.8.1.7}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.7}'switch' Statements}{93}{subsection.8.1.7}}
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.8}Bit-shifting Operations.}{95}{subsection.8.1.8}}
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.9}Bit-rotation}{95}{subsection.8.1.9}}
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.10}Nibble and Byte Swapping}{96}{subsection.8.1.10}}
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.11}Highest Order Bit / Any Order Bit}{96}{subsection.8.1.11}}
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.12}Higher Order Byte / Higher Order Word}{97}{subsection.8.1.12}}
\newlabel{sub:Peephole-Optimizer}{{8.1.13}{98}{Peephole Optimizer\label {sub:Peephole-Optimizer}\index {Peephole optimizer}\relax }{subsection.8.1.13}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.13}Peephole Optimizer}{98}{subsection.8.1.13}}
\newlabel{sub:ANSI-Compliance}{{8.2}{99}{ANSI-Compliance\index {ANSI-compliance}\label {sub:ANSI-Compliance}\relax }{section.8.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {8.2}ANSI-Compliance}{99}{section.8.2}}
\@writefile{toc}{\contentsline {section}{\numberline {8.3}Cyclomatic Complexity}{101}{section.8.3}}
\@writefile{toc}{\contentsline {section}{\numberline {8.4}Retargetting for other Processors}{101}{section.8.4}}
\@writefile{toc}{\contentsline {chapter}{\numberline {9}Compiler internals}{103}{chapter.9}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{sub:The-anatomy-of}{{9.1}{103}{The anatomy of the compiler\label {sub:The-anatomy-of}\relax }{section.9.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {9.1}The anatomy of the compiler}{103}{section.9.1}}
\gdef \LT@ii {\LT@entry 
    {1}{72.31685pt}\LT@entry 
    {1}{71.91685pt}\LT@entry 
    {1}{113.11761pt}\LT@entry 
    {1}{195.51913pt}}
\@writefile{toc}{\contentsline {section}{\numberline {9.2}A few words about basic block successors, predecessors and dominators}{109}{section.9.2}}
\@writefile{toc}{\contentsline {chapter}{\numberline {10}Acknowledgments}{110}{chapter.10}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
